package com.roger.homecenterscreen.utils

import android.content.Context
import android.os.Build
import android.util.Log

/**
 * 系统工具类，处理不同ROM的兼容性问题
 */
object SystemUtils {
    
    private const val TAG = "SystemUtils"
    
    /**
     * 判断是否为MIUI系统
     */
    fun isMIUI(): Boolean {
        return try {
            val property = getSystemProperty("ro.miui.ui.version.name")
            !property.isNullOrEmpty()
        } catch (e: Exception) {
            false
        }
    }
    
    /**
     * 获取MIUI版本
     */
    fun getMIUIVersion(): String? {
        return try {
            getSystemProperty("ro.miui.ui.version.name")
        } catch (e: Exception) {
            null
        }
    }
    
    /**
     * 获取系统属性
     */
    private fun getSystemProperty(key: String): String? {
        return try {
            val clazz = Class.forName("android.os.SystemProperties")
            val method = clazz.getMethod("get", String::class.java)
            method.invoke(null, key) as? String
        } catch (e: Exception) {
            null
        }
    }
    
    /**
     * 检查网络权限状态
     */
    fun checkNetworkPermissions(context: Context): Boolean {
        return try {
            val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE)
            connectivityManager != null
        } catch (e: Exception) {
            Log.w(TAG, "检查网络权限失败", e)
            false
        }
    }
    
    /**
     * 获取设备信息（用于调试）
     */
    fun getDeviceInfo(): String {
        return StringBuilder().apply {
            append("设备厂商: ${Build.MANUFACTURER}\n")
            append("设备型号: ${Build.MODEL}\n")
            append("Android版本: ${Build.VERSION.RELEASE}\n")
            append("API级别: ${Build.VERSION.SDK_INT}\n")
            if (isMIUI()) {
                append("MIUI版本: ${getMIUIVersion()}\n")
            }
        }.toString()
    }
    
    /**
     * 处理MIUI系统特有的权限问题
     */
    fun handleMIUIPermissions(context: Context) {
        if (isMIUI()) {
            Log.i(TAG, "检测到MIUI系统，版本: ${getMIUIVersion()}")
            
            try {
                // 使用专门的MIUI权限管理器
                val permissionManager = MIUIPermissionManager(context)
                
                // 处理MIUI特有问题
                permissionManager.handleMIUISpecificIssues()
                
                // 输出权限状态报告
                val statusReport = permissionManager.getPermissionStatusReport()
                Log.i(TAG, "权限状态报告:\n$statusReport")
                
                // 检查网络状态
                if (!checkNetworkPermissions(context)) {
                    Log.w(TAG, "网络权限可能受限，这可能导致RTMode权限错误")
                }
                
            } catch (e: Exception) {
                Log.e(TAG, "MIUI权限处理异常", e)
            }
        }
    }
    
    /**
     * 创建权限管理器实例
     */
    fun createPermissionManager(context: Context): MIUIPermissionManager {
        return MIUIPermissionManager(context)
    }
} 